#pragma once
#include <iostream>
//#include <fstream>
using namespace std;
using std::string;

class Sales_data
{
	// 类
	int ISBN;
	public:string bookNo;
	unsigned units_sold = 0;
	double revenue = 0;


	//构造函数
	Sales_data() = default;
	Sales_data(double sold);
	Sales_data(string book, double sold);

	public:void SetISBN(int isbn);
	public:string GetBook();

	public:int Isbn();
	public:int isbn() const;
	public:Sales_data & Combine(const Sales_data & rhs);

	public:void Add(Sales_data target);
	public:void Read();
	public:void Print();
	public:int avg_price() const;  // 类的参数如果是 const，调用的函数也必须是 const

	// 7.2.1  friend -> 友元：允许其他类或者函数访问它恶非公有成员  
	friend Sales_data TestFriend(Sales_data target);
};

// 底下编译会报错
//istream &read(istream &is,Sales_data &item)
//{
//	double price = 0;
//	//is >> item.bookNo >> item.units_sold >> price;
//	item.revenue = price * item.units_sold;
//	return is;
//}
//
//ostream &print(ostream &os,const Sales_data &item)
//{
//	os << item.isbn() << " " << item.units_sold << " "
//		<< item.revenue << " " << item.avg_price();
//	return os;
//}
//
//Sales_data add(const Sales_data &lhs,const Sales_data &rhs)
//{
//	Sales_data sum = lhs;
//	sum.Combine(rhs);
//	return sum;
//}

